// 自己选择的路，跪着也要走完。朋友们，虽然这个世界日益浮躁起来,只
// 要能够为了当时纯粹的梦想和感动坚持努力下去，不管其它人怎么样,我
// 们也能够保持自己的本色走下去。                      ——AKPower
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <string>
#include <stack>
#include <set>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
using namespace std;
typedef long long ll;
bool vis[300100];
ll d[300100],cur[300100];
vector<ll> p[300100];
ll du[300100];
ll pre[300100];
void dfs(ll f,ll u){
    // if(vis[u]){
    //     // flag=true;
    //     // cur[u]++;
    //     return true;
    // }
    // vis[u]=true;
    if(vis[u]==false){
        vis[u]=true;
    }
    else {
        cur[u]++;
        return ;
        // if(pre[u]==du[u])
        //     return ;
    }
    ll len=p[u].size();
    // bool f1=false;
    for(ll i=pre[u];i<len;i++){
        ll v=p[u][i];
        if(v==f)continue;
        pre[u]=i+1;
        // bool ff=dfs(u,v);
        // if(ff){
        //     f1=true;
        //     cur[u]++;
        // }
    }
    return ;
}


int main()
{
    IOS;
    ll n,m;
    cin>>n>>m;
    ll x,y;
    for(ll i=1;i<=m;i++){
        cin>>x>>y;
        p[x].push_back(y);
        p[y].push_back(x);
        du[x]++;
        du[y]++;
    }
    // memset(pre,-1,sizeof(-1));
    ll ans=0;
    for(ll i=1;i<=n;i++){
        if(vis[i])continue;
        ans++;
        dfs(0,i);
    }
    // cout<<"ans="<<ans<<endl;
    for(ll i=1;i<=n;i++){
        // cout<<"??"<<du[i]<<" "<<cur[i]<<endl;
        if(i<n){
            if(cur[i]>=du[i]-1&&du[i]>0)
                cout<<ans<<" ";
            else cout<<ans+du[i]-1-cur[i]<<" ";
        }
        else {
            if(cur[i]>=du[i]-1&&du[i]>0)
            cout<<ans<<endl;
            else cout<<ans+du[i]-1-cur[i]<<endl;
            }
    }
    getchar();
    getchar();
    return 0;
}
